package academia.persistencia;

import academia.gui.cadastro.CadastroGerente;
import academia.gui.lista.ListarCliente;
import academia.pessoal.Cliente;
import academia.pessoal.Instrutor;
import academia.pessoal.Pessoa;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import net.proteanit.sql.DbUtils;

public class PessoaDAO {

    Connection conn = null;
    ResultSet rs = null;
    PreparedStatement ps = null;

    public PessoaDAO() {
    }

    public void cadastro(Pessoa pessoa, String tipo) {
        conn = DBAcademia.ConnectDB();
        if (tipo.equals("Gerente") || tipo.equals("Atendente")) {
            try {
                String sql = "INSERT INTO Pessoa(Nome,CPF,CEP,Cidade,Bairro,Endereco,Senha,Telefone,Nascimento,Tipo,CREF,Pagamento) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
                ps = conn.prepareStatement(sql);
                fillCadastro(pessoa, tipo, ps);
                if (tipo.equals("Cliente")) {
                    Cliente cliente = new Cliente();
                    cliente = (Cliente) pessoa;
                    ps.setBoolean(11, cliente.getPagamento());

                } else if (tipo.equals("Instrutor")) {
                    Instrutor instrutor = new Instrutor();
                    instrutor = (Instrutor) pessoa;
                    ps.setInt(12, instrutor.getCref());
                }
                ps.execute();
                JOptionPane.showMessageDialog(null, "Cadastro efetuado com Sucesso.");
            } catch (SQLException a) {
                JOptionPane.showMessageDialog(null, a);
            } finally {
                try {
                    ps.close();
                } catch (SQLException ex) {

                    Logger.getLogger(CadastroGerente.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }

    public void fillCadastro(Pessoa pessoa, String tipo, PreparedStatement ps) {
        try {
            ps.setString(1, pessoa.getNome());
            ps.setInt(2, pessoa.getCpf());
            ps.setString(3, pessoa.getCep());
            ps.setString(4, pessoa.getCidade());
            ps.setString(5, pessoa.getBairro());
            ps.setString(6, pessoa.getEndereco());
            ps.setString(7, pessoa.getSenha());
            ps.setString(8, pessoa.getTelefone());
            ps.setString(9, pessoa.getNascimento());
            ps.setString(10, tipo);
        } catch (SQLException a) {
            JOptionPane.showMessageDialog(null, a);

        }
    }

    public void excluir(int id) {
//        conn = DBAcademia.ConnectDB();
//
//        try {
//            String sql = "DELETE from Pessoa where IDpessoa='" + id + "'";
//            ps = conn.prepareStatement(sql);
//            JOptionPane.showMessageDialog(null, "Cadastro excluido com sucesso.");
//        } catch (SQLException a) {
//            JOptionPane.showMessageDialog(null, a);
//        } finally {
//            try {
//                rs.close();
//                ps.close();
//            } catch (SQLException ex) {
//                JOptionPane.showMessageDialog(null, ex);
//            }
//        }
    }

    public void editar(Pessoa pessoa) {
    }

    public void buscar(int id) {
    }

    public void listar(String tipo) {
//        conn = DBAcademia.ConnectDB();
//        try {
//            String sql = "SELECT * FROM Pessoa WHERE Tipo='" + tipo + "'";
//            ps = conn.prepareStatement(sql);
//            rs = ps.executeQuery();
//            if (rs.next()) {
//                if (tipo.equals("Cliente")) {
//                    Pessoa pessoa = new Cliente();
//                    pessoa.equals(rs);
//                    Update_Table3();
//                }
//
//            }
//
//
//    } catch (Exception e) {
//            JOptionPane.showMessageDialog(null, e);
//
//        } finally {
//            try {
//                rs.close();
//                ps.close();
//            } catch (SQLException ex) {
//                Logger.getLogger(ListarCliente.class.getName()).log(Level.SEVERE, null, ex);
//            }
//        }
    }
}
